當使用像 Nuxt 這樣可以在客戶端和服務器端執行調用並渲染頁面的框架時,需要應對一些挑戰。這就是為什麼 Nuxt 提供了組合來包裹您的查詢。
useFetch 和 useAsyncData 組合確保了一旦在服務器上進行了 API 調用,數據將以正確的方式轉發到客戶端。這個 JavaScript 對象可以通過 useNuxtApp().payload 訪問,並且在客戶端執行代碼時用於避免重新獲取相同的數據。
使用 Nuxt DevTools 可以輕鬆檢查 payload 中的數據。該工具在 payload 選項卡中提供了此數據的詳細信息。
Nuxt 使用 Vue 的 Suspense 組件,在所有異步數據可用於視圖之前,防止導航。數據獲取組合可以幫助您充分利用這個功能,並根據每個調用的情況使用最合適的功能。
<script setup lang="ts">
const { data: count } = await useFetch('/api/count')
</script>
<template>
Page visits: {{ count }}
</template>
<script setup lang="ts">
const { data, error, execute, refresh } = await useFetch('/api/users')
</script>
<template>
<div>
<p>{{ data }}</p>
<button @click="refresh">Refresh data</button>
</div>
</template>
<script setup lang="ts">
const { data, error } = await useAsyncData('users', () => myGetFunction('users'))
</script>